/**
*   @file    Os_ioc_api.h
*   @version 4.0.98
*
*   @brief   AUTOSAR OS - Brief file description (one line).
*   @details Detailed file description (can be multiple lines).
*
*   @addtogroup [OS]
*   @{
*/
/*==================================================================================================
*   Project              : AUTOSAR OS 4.0
*   Platform             : Arm Architecture
*   Peripheral           : CortexM4
*   Dependencies         : none
*
*   Autosar Version      : 4.0.3
*   Autosar Revision     : ASR_REL_4_0_REV_0003
*   Autosar Conf.Variant :
*   SW Version           : 4.0.98
*   Build Version        : ARMS32KV4_OS_4.0.98_ASR_REL_4_0_REV_0003
*
*   (c) Copyright 2011 - 2016 Freescale Semiconductor Inc.
*   Copyright 2017 NXP
*   All Rights Reserved.
==================================================================================================*/
/*==================================================================================================
==================================================================================================*/

#ifndef OS_IOC_API_H
#define OS_IOC_API_H

#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */

#include <Os_prop_autosar_api.h>
#include <Os_memory_api.h>      /* for OSServiceCallX defines */

#include <Os_types_common_public.h>

#if defined(OSIOC)

/*
 * Actual API is generated by SG based on this API,
 * see generated ioc.h file
 */

#define OSTEXT_START_SEC_CODE
#include "Os_sections.h"

#if (OSNIOCBUFFERS > 0U)

extern Std_ReturnType OS_OSIocWriteRef (OSWORD commId, OSBYTEPTR dataRef);
extern Std_ReturnType OS_OSIocRead (OSWORD commId, OSBYTEPTR dataRef);


#endif /* OSNIOCBUFFERS > 0 */

#if (OSNIOCGROUPBUFFERS > 0U)

extern Std_ReturnType OS_OSIocWriteGroup (OSWORD commId, OSBYTEPTR dataRef);
extern Std_ReturnType OS_OSIocReadGroup (OSWORD commId, OSBYTEPTR dataRef);


#endif /* OSNIOCGROUPBUFFERS > 0 */

#if (OSNIOCQUEUES > 0U)

extern Std_ReturnType OS_OSIocSendRef (OSWORD commId, OSBYTEPTR dataRef);
extern Std_ReturnType OS_OSIocReceive (OSWORD commId, OSBYTEPTR dataRef);


#endif /* OSNIOCQUEUES > 0U */

#if (OSNIOCGROUPQUEUES > 0U)

extern Std_ReturnType OS_OSIocSendGroup (OSWORD commId, OSBYTEPTR dataRef);
extern Std_ReturnType OS_OSIocReceiveGroup (OSWORD commId, OSBYTEPTR dataRef);


#endif /* OSNIOCGROUPQUEUES > 0U */

#if (OSNIOCQUEUES > 0U) || (OSNIOCGROUPQUEUES > 0U)
extern Std_ReturnType OS_OSIocEmptyQueue (OSWORD commId);
#endif /* (OSNIOCQUEUES > 0U) || (OSNIOCGROUPQUEUES > 0U) */




#if (OSNIOCBUFFERS > 0U)

#define OSIocWriteRef( commId, dataRef )       OS_OSIocWriteRef( commId, dataRef )
#define OSIocRead( commId, dataRef )           OS_OSIocRead( commId, dataRef )

#endif /* OSNIOCBUFFERS > 0U */

#if (OSNIOCGROUPBUFFERS > 0U)

#define OSIocWriteGroup( commId, dataRef )       OS_OSIocWriteGroup( commId, dataRef )
#define OSIocReadGroup( commId, dataRef )        OS_OSIocReadGroup( commId, dataRef )

#endif /* OSNIOCGROUPBUFFERS > 0 */


#if (OSNIOCQUEUES > 0U)

#define OSIocSendRef( commId, dataRef )        OS_OSIocSendRef( commId, dataRef )
#define OSIocReceive( commId, dataRef )        OS_OSIocReceive( commId, dataRef )


#endif /* OSNIOCQUEUES > 0U */

#if (OSNIOCGROUPQUEUES > 0U)

#define OSIocSendGroup( commId, dataRef )          OS_OSIocSendGroup( commId, dataRef )
#define OSIocReceiveGroup( commId, dataRef )       OS_OSIocReceiveGroup( commId, dataRef )


#endif /* OSNIOCGROUPQUEUES > 0 */

#if (OSNIOCQUEUES > 0U) || (OSNIOCGROUPQUEUES > 0U)
#define OSIocEmptyQueue( commId )              OS_OSIocEmptyQueue( commId )
#endif /* (OSNIOCQUEUES > 0U) || (OSNIOCGROUPQUEUES > 0U) */


#define OSTEXT_STOP_SEC_CODE
#include "Os_sections.h"


#endif /* defined(OSIOC) */

#ifdef __cplusplus
}
#endif /* __cplusplus */


#endif /*OS_IOC_API_H */

/** @} */
